1
おもちゃのデータセットから現実世界の混沌へ
EvoClass-AI002Lecture 5
00:00

1. 桁のギャップを埋める:データ読み込みの基礎

深層学習モデルは整然とした一貫したデータで成り立っていますが、現実世界のデータセットは本質的に乱雑です。私たちが取り組むべきは、事前にパッケージされたベンチマーク(例:MNIST)から、データロードそのものが複雑な調整作業となる非構造的ソースへの移行です。このプロセスの基盤は、データ管理に特化したPyTorchのツールにあります。

中心的な課題は、ディスク上に分散して保存された生データ(画像、テキスト、音声ファイルなど)を、高度に整理され標準化されたPyTorchの テンソル形式 GPUが期待する形式に変換することです。これにはインデックス付け、読み込み、前処理、そして最終的なバッチングのためのカスタムロジックが必要です。

現実世界のデータにおける主な課題

  • データの混沌: データが複数のディレクトリに散在しており、多くの場合、CSVファイルでのみインデックス付けされている。
  • 前処理が必要: 画像は、テンソルに変換される前にリサイズ、正規化、または拡張処理が必要な場合がある。
  • 効率性の目標: データは最適化され、ブロッキングのないバッチとしてGPUに供給されなければならず、トレーニング速度を最大化する。
PyTorchの解決策:役割の分離
PyTorchは責任の分離を強制します: Dataset は「何をやるか」(単一のサンプルとラベルにアクセスする方法)を担当し、一方 DataLoader は「どのようにやるか」(効率的なバッチング、シャッフル、マルチスレッドによる配信)を担当します。
data_pipeline.py
TERMINALbash — data-env
> Ready. Click "Run" to execute.
>
TENSOR INSPECTOR Live

Run code to inspect active tensors
Question 1
What is the primary role of a PyTorch Dataset object?
To organize samples into mini-batches and shuffle them.
To define the logic for retrieving a single, preprocessed sample.
To perform the matrix multiplication inside the model.
Question 2
Which DataLoader parameter enables parallel loading of data using multiple CPU cores?
device_transfer
batch_size
num_workers
async_load
Question 3
If your raw images are all different sizes, which component is primarily responsible for resizing them to a uniform dimension (e.g., $224 \times 224$)?
The DataLoader's collate_fn.
The GPU's dedicated image processor.
The Transformation function applied within the Dataset's __getitem__ method.
Challenge: The Custom Image Loader Blueprint
Define the structure needed for real-world image classification.
You are building a CustomDataset for 10,000 images indexed by a single CSV file containing paths and labels.
Step 1
Which mandatory method must return the total number of samples?
Solution:
The __len__ method.
Concept: Defines the epoch size.
Step 2
What is the correct order of operations inside __getitem__(self, index)?
Solution:
1. Look up file path using index.
2. Load the raw data (e.g., Image).
3. Apply the necessary transforms.
4. Return the processed Tensor and Label.